# 用户指南 数据结构

import pandas as pd
import numpy as np

# >>>
# Series 是一个一维带标签的数组，可以保存任何数据类型（整数、字符串、浮点数、Python 对象等）。轴标签统称为**索引**。
#  使用方式
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
print(s)
# data 类型
# 一个 Python 字典
# 一个 ndarray
# 一个标量值

# >>
# ndarray 如果 data 是一个 ndarray，**索引** 必须与 **data** 的长度相同。如果没有传递索引，将创建一个索引，其值为 [0, ..., len(data) - 1]。
# print(s.index)
# print(s.values)
# >>
# Python 字典 如果传递了索引，将提取与索引中标签相对应的 data 中的值。
# d = {"b": 1, "a": 0, "c": 2}
# s1 = pd.Series(d)
# print(s1)
# >>
# 标量值 如果 data 是一个标量值，则必须提供索引。该值将重复以匹配 **索引** 的长度。

# s2 = pd.Series(5.1, index=['a', 'b', 'c'])
# print(s2)

# >>>
# Series 类似 ndarray
# Series 的行为与 ndarray 非常相似，并且是大多数 NumPy 函数的有效参数。但是，诸如切片之类的操作也将切片索引。
# 支持iloc 索引、切片、条件选择过滤、单个索引
# print(s.iloc[0])
# print(s.iloc[:3])
# print(s.median())
# print(s[s > s.median()])
# print(s.iloc[[2, 1]])
# print(np.exp(s))

# >>>
# Series 类似字典
# Series 也类似于固定大小的字典，可以通过索引标签获取和设置值。通过索引取值 使用 类似字典的 get 方法获取
# print(s['a'])
# s['b'] = 3
# print(s)
